package br.usp.pcs.acs.negocios.usuarios;

import java.util.ArrayList;
import br.usp.pcs.acs.infraestrutura.*;
import br.usp.pcs.acs.negocios.dao.AeronaveDao;
import br.usp.pcs.acs.negocios.dao.PedidoDao;
import br.usp.pcs.acs.negocios.dao.VOODao;
import br.usp.pcs.acs.negocios.dto.AeronaveDto;
import br.usp.pcs.acs.negocios.dto.CADto;
import br.usp.pcs.acs.negocios.dto.PedidoDto;
import br.usp.pcs.acs.negocios.dto.VOODto;
import br.usp.pcs.acs.negocios.voo.*;

public class CA extends User
{
	
	private CADto caDto;
	
	public CADto getCaDto() {
		return caDto;
	}
	
	public void setCaDto(CADto caDto) {
		this.caDto = caDto;
	}
	
	public void requisitaVoo(Voo voo)
	{
		VOODao dao = new VOODao();		
		VOODto dto = new VOODto();
		dto = voo.getVOODto();
		dao.insert(dto);
		dto.setAutorizado((byte)0);
		dto.setCa_id(this.caDto.getId());
		voo.commitChanges();
	}
	
	public void cancelaVoo(Voo voo)
	{
		if (this/*.caDto.getId()*/ == voo.getCa()/*.getCaDto().getId()*/){
			voo.deleteVoo();
		}			
	}
	
	public void editVoo(Voo voo)
	{
		VOODao dao = new VOODao();	
		VOODto dto = new VOODto();
		dto = voo.getVOODto();
		dao.edit(dto);
		dto.setAutorizado((byte)0);
		dto.setPortao_id(0);
		voo.commitChanges();
	}
	
	public void requisitaRecurso(Pedido pedido)
	{
		PedidoDao dao = new PedidoDao();
		PedidoDto dto = new PedidoDto();
		dto = pedido.getPedidoDto();
		dao.insert(dto);
		dto.setCa_id(this.caDto.getId());
		pedido.commitChanges();
	}
	
	public void cadastraPassageiros(ArrayList<Passageiro> pass, Voo voo)
	{ 
		voo.setPassageiros(pass);
		voo.commitChanges();
	}
	
	public void alteraPassageiros(ArrayList<Passageiro> pass, Voo voo)
	{ 
		//TODO C
	}
	
	public void removePassageiros(ArrayList<Passageiro> pass, Voo voo)
	{ 
		//TODO C
	}
	
	public void cadastrarAeronave(Aeronave aviao)
	{
		AeronaveDao dao = new AeronaveDao();
		dao.insert(aviao.getAeronaveDto());
		aviao.commitChanges();
	}
	
	public void alterarAeronave(Aeronave aviao)
	{
		AeronaveDao dao = new AeronaveDao();
		dao.edit(aviao.getAeronaveDto());
		aviao.commitChanges();
	}
	
	public void excluirAeronave(Aeronave aviao)
	{
		AeronaveDao dao = new AeronaveDao();		
		dao.remove(aviao.getAeronaveDto().getId());
	}
	
	public void commitChanges()
	{
		CADao dao = new CADao();
		if(this.caDto.getId()==0)
			dao.insert(this.caDto);
		else
			dao.edit(this.caDto);
	}
	
}
